package Advanced;

public class HashcodeAndEquals {
    private String name;
    private double num;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    /**
     *  hashCode :
     *     如果没有任何类去覆盖对象的hashCode,那么此时hashCode就是:
     *      此对象在内存中地址中一个 int类型的 地址标识
     */
    @Override
    public int hashCode() {
        return super.hashCode();
    }

    /**
     *  equals :
     *      判断两个对象在逻辑上是否相同
     */
    @Override
    public boolean equals(Object obj) {
        // 1. 首先判断两个对象是否相等，相等返回true
        if(obj == this) return true;
        // 2. 判断类型 是否相等,相等进行下一步
        if(!(obj instanceof HashcodeAndEquals)) return false;
        // 3. 判断对象的各个属性是否相同
        HashcodeAndEquals that = (HashcodeAndEquals) obj;
        return this.getName().equals(that.getName()) && Double.compare(that.getNum(),this.getNum())==0;
    }


}
